General view

To generate a basic point plot you can use the plot() function.

plot(c(1:2))

This function perform a plot with two dimensions (Y vs. X). By default, the first vector provided will be considered X and the second Y. If only one vector is provided, Y will be the values of the vector and X their indices. Check this examples:

# Plot with x and y ...
plot(c(5:7),c(2,4,5))
# ...   This is the same than:
plot(x=c(5:7),y=c(2,4,5))

# ...   But this is not:
plot(y=c(5:7),x=c(2,4,5))

# Plot with only one vector:
plot(c(5:7))

If we make another plot, the previous one is removed

plot(c(1:2))

plot(c(1:3))

But you can open additional devices using the following functions, some of them system-dependent:

windows()   #Windows
X11()       #Unix
quartz()    #Mac
dev.new()   #All platforms

These functions accept arguments to customize the device. For example, width and heigth

dev.new(width=1,height=1)
dev.new(width=5,height=3)

Using these functions, we can do a second plot maintaining the former

plot(1:10)

dev.new()
plot(c(2,4,3,8))

If you want to mantain the second plot and add some points on it, use points()

points(x=3.5,y=2.5)

If you have several devs, the points will be added to the “ACTIVE” one. You can select dev using dev.set (Note the change in ACTIVE-INACTIVE status):

dev.set(1)
points(1.4,2)

You can close a device by clicking “X” or using the command:

 dev.off()

Areas in a plot:

Every plot has different areas (the plot itself, the margins, the axes, the axis labels, the box, the title,…). You can plot and customize every of this areas using the proper function (text(), mtext(), axis(), box(), main(),…):

Dividing devices to show more than one plot at the same time

Use layout() to divide the device and layout.show() to see the resulting layout.

layout(1:2)
layout.show(2)

plot(1:10)
plot(1:3)

If you want right-left instead of top-bottom or a more complex layout, use set a matrix accordingly.

layout(matrix(1:2,ncol=2))
layout.show(2)

plot(1:10)
plot(1:3)

# Larger matrices: 3 columns and 2 rows:
layout(matrix(1:6,ncol=3))
layout.show(6)

# More complex matrices: 3 columns and 2 rows:
M<-matrix(rep(c(rep(1,5),c(2,2,3,3,4)),5),nrow=5,byrow=T)
M
##      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
## [1,]    1    1    1    1    1    2    2    3    3     4
## [2,]    1    1    1    1    1    2    2    3    3     4
## [3,]    1    1    1    1    1    2    2    3    3     4
## [4,]    1    1    1    1    1    2    2    3    3     4
## [5,]    1    1    1    1    1    2    2    3    3     4
layout(M)
layout.show(4)

EXERCISE: CREATE A LAYOUT AS THE ONE SHOWN IN FIGURE

Saving your plot

There are several ways. You can save the plot in the ACTIVE device as a pdf file using:

dev.copy2pdf(file="my.plot_layout.pdf")

And there are other functions for saving the ACTIVE device using other formats:

win.metafile("mygraph.wmf")     #windows metafile
png("mygraph.png")  #png file
jpeg("mygraph.jpg")     #jpeg file
bmp("mygraph.bmp")  #bmp file
postscript("mygraph.ps")    #postscript file 

Alternatively, you can produce the plot directly to a file. For example, using the pdf() function will generate a pdf file in your computer. From that point, all the plotting functions will be applied to this file. You will not be able to open the file (and see your plot) unless you close the conection between the R and the file using dev.off(). Here is an example:

# first create the pdf and then plot "on it"

pdf("mygraph.pdf") 
plot(1:2)
# Nothing happens, but a file is created.
# However, you can't open it
dev.off()
# Now you can

Plot types and arguments

There are multiple functions to perform different plots. Many of them share arguments to set particular issues -such as colors (col), size (cex),..- and other arguments are specific of every function.

In this section we briefly describe some of the functions (and few of their argruments) to perform plots.

Scatterplots

Let’s explore some options of plots using the bumpus dataset. The first step is to import and visualize the data:

bumpus <- read.csv("bumpus.csv")
str(bumpus)
## 'data.frame':    136 obs. of  13 variables:
##  $ subject : int  1 1 2 2 3 3 4 4 5 5 ...
##  $ sex     : Factor w/ 2 levels "f","m": 2 2 2 2 2 2 2 2 2 2 ...
##  $ age     : Factor w/ 3 levels "","a","y": 2 2 2 2 2 2 2 2 2 2 ...
##  $ survived: logi  TRUE FALSE FALSE TRUE TRUE FALSE ...
##  $ TL      : int  154 165 160 160 155 161 154 162 156 163 ...
##  $ AE      : int  241 240 245 252 243 249 245 246 247 250 ...
##  $ WT      : num  24.5 26.5 26.1 26.9 26.9 25.6 24.3 25.9 24.1 25.5 ...
##  $ BHL     : num  31.2 31 32 30.8 30.6 32.3 31.7 32.3 31.5 32.5 ...
##  $ HL      : num  17.4 18.7 18.7 18.7 18.6 ...
##  $ FL      : num  17 17.9 18 18 17.9 ...
##  $ TTL     : num  26 27.8 28.2 30 29.2 ...
##  $ SW      : num  14.9 15.4 15.5 15.3 15.3 ...
##  $ SKL     : num  21.1 21.5 21.4 21.4 21.5 ...

As mentioned above, if only one variable is selected, it is plotted as Y and X is an index

plot(bumpus$TL)

Logical are coerced

plot(bumpus$survived)

With two variables:

layout(matrix(1:2,ncol=2))
plot(bumpus$TL, bumpus$AE)
# Note that the order is X Y
plot(bumpus$AE~bumpus$TL)

# Note that the order is Y X

The scatterplot also works with large dataframes:

# The entire bumpus dataset
plot(bumpus)

# A subset
plot(bumpus[,c("TL", "AE", "BHL", "SKL")])

# This is exactly the same
pairs(~TL+AE+BHL+SKL, data=bumpus)

DENSITY PLOTS

See ?hist for details.

hist(bumpus$TL)

hist(bumpus$TL, main="Histogram of total length", xlab="Total length")

hist(bumpus$TL, main="Histogram of total length", xlab="Total length", 
     breaks=20)

BOXPLOTS

See ?boxplot for details

boxplot(bumpus)

boxplot(bumpus[,7:13])

boxplot(bumpus$TL)

boxplot(bumpus$TL~bumpus$survived)

boxplot(bumpus$TL~bumpus$survived, main="Boxplot of TL in relation to survival", horizontal=T)

bx.bumpus <- boxplot(bumpus$TL~bumpus$survived, plot=F)
bx.bumpus
## $stats
##      [,1]  [,2]
## [1,]  152 153.0
## [2,]  158 156.0
## [3,]  161 159.0
## [4,]  163 160.5
## [5,]  167 166.0
## attr(,"class")
##     FALSE 
## "integer" 
## 
## $n
## [1] 64 72
## 
## $conf
##          [,1]     [,2]
## [1,] 160.0125 158.1621
## [2,] 161.9875 159.8379
## 
## $out
## numeric(0)
## 
## $group
## numeric(0)
## 
## $names
## [1] "FALSE" "TRUE"
bxp(bx.bumpus, main="Boxplot of TL in relation to survival", horizontal=T)

BARPLOTS

See ?barplot for details

survived <- table(bumpus$survived)
survived
## 
## FALSE  TRUE 
##    64    72
survived <- survived / nrow(bumpus)
survived
## 
##     FALSE      TRUE 
## 0.4705882 0.5294118
barplot(survived)

barplot(survived, horiz=T)

survivedbysex <- table(bumpus$sex, bumpus$survived) /  nrow(bumpus)
survivedbysex 
##    
##         FALSE      TRUE
##   f 0.2058824 0.1544118
##   m 0.2647059 0.3750000
barplot(survivedbysex, main="Survived birds by sex", col=c("red", "blue"))

barplot(survivedbysex, main="Survived birds by sex", col=c("red", "blue"), 
        beside=T)

PIECHARTS

See ?pie for details

sex.surv <- paste(bumpus$sex, bumpus$survived, sep="_")
fr.bumpus <- table(sex.surv)/length(sex.surv)
pie(fr.bumpus)

pie(fr.bumpus, 
    labels=c("F - died", "F - lived", "M - died", "M- lived"),        
    main="Percentages of survival by sex", 
    col=c("darkred", "red", "darkblue", "blue"))

PLOTS AS LAYERS

Plots can be built by adding layers. As usually occur with R, there are different ways of doing the same thing. For example, you can represent points as circles connected by lines following these three approaches:

xx <- 1:100
set.seed(123)
yy <- rnorm(100)

# 1.- Plot points and add lines:
plot(xx, yy)
lines(xx,yy)

# 2.- Plot lines and add points:
 plot(xx, yy,type="l")
 points(xx, yy)

# 3.- Using the argument type="o" (overlapped)
 plot(xx, yy,type="o")

# NOTE: There are other options, the default is "p" (points)
 plot(xx, yy,type="p")

 plot(xx, yy,type="l")

 plot(xx, yy,type="b")

 plot(xx, yy,type="h")

Linear regressions and curves can also be added as layers:

# adding regressions
plot(bumpus$TL, bumpus$AE)
fit <- lm(AE ~ TL, data = bumpus)
abline(fit, col='red')

hist(bumpus$TL, main="Histogram of total length", xlab="Total length", 
     breaks=20, freq=F)
lines(density(bumpus$TL))   # Add a Kernel density plot

plot(density(bumpus$TL), main="Kernel Density of Total Length")
polygon(density(bumpus$TL), col="grey" , border="blue", lwd=2)

curve(dnorm(x, mean=mean(bumpus$TL), sd=sd(bumpus$TL)), col="red", lwd=2,  lty=2,xlim=range(bumpus$TL))                     # Add a normal curve

plot(density(bumpus$TL), main="Kernel Density of Total Length")
polygon(density(bumpus$TL), col="grey" , border="blue", lwd=2)
curve(dnorm(x, mean=mean(bumpus$TL), sd=sd(bumpus$TL)), add=T, col="red", lwd=2,      
      lty=2)                    # Add a normal curve

LAYERS FROM SCRATCH

plot(bumpus$TL, bumpus$AE) # Check the axis dimensions

range(bumpus$TL)
## [1] 152 167
range(bumpus$AE)
## [1] 230 256
#dev.new()
plot.new()
plot.window(c(150, 170), c(220, 260))
axis(1)
axis(2)
box()
title(main="A plot from scratch", xlab="Total Length", ylab="Alar Extent")
text(bumpus$TL, bumpus$AE, bumpus$sex)


points(160, 225, col='red')
text(160, 225, "I want to write something here!")

points(152, 256, col='red')
text(152, 256, "<- not centered! Where the arrow points!", pos=4)

text(160, 218.5, "Can I write outside?")

mtext("Yes, you can write outside here..", side=1, line=4)
mtext("... also here", side=3)

Controlling plot aesthetics

Almost anything you want to control in R plotting is available through par()

?par
layout(matrix(1:4, nrow=2, byrow=T))
plot(bumpus$HL~bumpus$TL)

# POINT STYLE ####
# Point size
# Half the default value
plot(bumpus$HL~bumpus$TL, cex=0.5)
# Larger than default
plot(bumpus$HL~bumpus$TL, cex=1.5)
# Depending on 
plot(bumpus$HL~bumpus$TL, cex=10*(log(bumpus$TL)-5),col="blue")

# Point colour (see ColorChart.pdf and execute):
colors()
##   [1] "white"                "aliceblue"            "antiquewhite"        
##   [4] "antiquewhite1"        "antiquewhite2"        "antiquewhite3"       
##   [7] "antiquewhite4"        "aquamarine"           "aquamarine1"         
##  [10] "aquamarine2"          "aquamarine3"          "aquamarine4"         
##  [13] "azure"                "azure1"               "azure2"              
##  [16] "azure3"               "azure4"               "beige"               
##  [19] "bisque"               "bisque1"              "bisque2"             
##  [22] "bisque3"              "bisque4"              "black"               
##  [25] "blanchedalmond"       "blue"                 "blue1"               
##  [28] "blue2"                "blue3"                "blue4"               
##  [31] "blueviolet"           "brown"                "brown1"              
##  [34] "brown2"               "brown3"               "brown4"              
##  [37] "burlywood"            "burlywood1"           "burlywood2"          
##  [40] "burlywood3"           "burlywood4"           "cadetblue"           
##  [43] "cadetblue1"           "cadetblue2"           "cadetblue3"          
##  [46] "cadetblue4"           "chartreuse"           "chartreuse1"         
##  [49] "chartreuse2"          "chartreuse3"          "chartreuse4"         
##  [52] "chocolate"            "chocolate1"           "chocolate2"          
##  [55] "chocolate3"           "chocolate4"           "coral"               
##  [58] "coral1"               "coral2"               "coral3"              
##  [61] "coral4"               "cornflowerblue"       "cornsilk"            
##  [64] "cornsilk1"            "cornsilk2"            "cornsilk3"           
##  [67] "cornsilk4"            "cyan"                 "cyan1"               
##  [70] "cyan2"                "cyan3"                "cyan4"               
##  [73] "darkblue"             "darkcyan"             "darkgoldenrod"       
##  [76] "darkgoldenrod1"       "darkgoldenrod2"       "darkgoldenrod3"      
##  [79] "darkgoldenrod4"       "darkgray"             "darkgreen"           
##  [82] "darkgrey"             "darkkhaki"            "darkmagenta"         
##  [85] "darkolivegreen"       "darkolivegreen1"      "darkolivegreen2"     
##  [88] "darkolivegreen3"      "darkolivegreen4"      "darkorange"          
##  [91] "darkorange1"          "darkorange2"          "darkorange3"         
##  [94] "darkorange4"          "darkorchid"           "darkorchid1"         
##  [97] "darkorchid2"          "darkorchid3"          "darkorchid4"         
## [100] "darkred"              "darksalmon"           "darkseagreen"        
## [103] "darkseagreen1"        "darkseagreen2"        "darkseagreen3"       
## [106] "darkseagreen4"        "darkslateblue"        "darkslategray"       
## [109] "darkslategray1"       "darkslategray2"       "darkslategray3"      
## [112] "darkslategray4"       "darkslategrey"        "darkturquoise"       
## [115] "darkviolet"           "deeppink"             "deeppink1"           
## [118] "deeppink2"            "deeppink3"            "deeppink4"           
## [121] "deepskyblue"          "deepskyblue1"         "deepskyblue2"        
## [124] "deepskyblue3"         "deepskyblue4"         "dimgray"             
## [127] "dimgrey"              "dodgerblue"           "dodgerblue1"         
## [130] "dodgerblue2"          "dodgerblue3"          "dodgerblue4"         
## [133] "firebrick"            "firebrick1"           "firebrick2"          
## [136] "firebrick3"           "firebrick4"           "floralwhite"         
## [139] "forestgreen"          "gainsboro"            "ghostwhite"          
## [142] "gold"                 "gold1"                "gold2"               
## [145] "gold3"                "gold4"                "goldenrod"           
## [148] "goldenrod1"           "goldenrod2"           "goldenrod3"          
## [151] "goldenrod4"           "gray"                 "gray0"               
## [154] "gray1"                "gray2"                "gray3"               
## [157] "gray4"                "gray5"                "gray6"               
## [160] "gray7"                "gray8"                "gray9"               
## [163] "gray10"               "gray11"               "gray12"              
## [166] "gray13"               "gray14"               "gray15"              
## [169] "gray16"               "gray17"               "gray18"              
## [172] "gray19"               "gray20"               "gray21"              
## [175] "gray22"               "gray23"               "gray24"              
## [178] "gray25"               "gray26"               "gray27"              
## [181] "gray28"               "gray29"               "gray30"              
## [184] "gray31"               "gray32"               "gray33"              
## [187] "gray34"               "gray35"               "gray36"              
## [190] "gray37"               "gray38"               "gray39"              
## [193] "gray40"               "gray41"               "gray42"              
## [196] "gray43"               "gray44"               "gray45"              
## [199] "gray46"               "gray47"               "gray48"              
## [202] "gray49"               "gray50"               "gray51"              
## [205] "gray52"               "gray53"               "gray54"              
## [208] "gray55"               "gray56"               "gray57"              
## [211] "gray58"               "gray59"               "gray60"              
## [214] "gray61"               "gray62"               "gray63"              
## [217] "gray64"               "gray65"               "gray66"              
## [220] "gray67"               "gray68"               "gray69"              
## [223] "gray70"               "gray71"               "gray72"              
## [226] "gray73"               "gray74"               "gray75"              
## [229] "gray76"               "gray77"               "gray78"              
## [232] "gray79"               "gray80"               "gray81"              
## [235] "gray82"               "gray83"               "gray84"              
## [238] "gray85"               "gray86"               "gray87"              
## [241] "gray88"               "gray89"               "gray90"              
## [244] "gray91"               "gray92"               "gray93"              
## [247] "gray94"               "gray95"               "gray96"              
## [250] "gray97"               "gray98"               "gray99"              
## [253] "gray100"              "green"                "green1"              
## [256] "green2"               "green3"               "green4"              
## [259] "greenyellow"          "grey"                 "grey0"               
## [262] "grey1"                "grey2"                "grey3"               
## [265] "grey4"                "grey5"                "grey6"               
## [268] "grey7"                "grey8"                "grey9"               
## [271] "grey10"               "grey11"               "grey12"              
## [274] "grey13"               "grey14"               "grey15"              
## [277] "grey16"               "grey17"               "grey18"              
## [280] "grey19"               "grey20"               "grey21"              
## [283] "grey22"               "grey23"               "grey24"              
## [286] "grey25"               "grey26"               "grey27"              
## [289] "grey28"               "grey29"               "grey30"              
## [292] "grey31"               "grey32"               "grey33"              
## [295] "grey34"               "grey35"               "grey36"              
## [298] "grey37"               "grey38"               "grey39"              
## [301] "grey40"               "grey41"               "grey42"              
## [304] "grey43"               "grey44"               "grey45"              
## [307] "grey46"               "grey47"               "grey48"              
## [310] "grey49"               "grey50"               "grey51"              
## [313] "grey52"               "grey53"               "grey54"              
## [316] "grey55"               "grey56"               "grey57"              
## [319] "grey58"               "grey59"               "grey60"              
## [322] "grey61"               "grey62"               "grey63"              
## [325] "grey64"               "grey65"               "grey66"              
## [328] "grey67"               "grey68"               "grey69"              
## [331] "grey70"               "grey71"               "grey72"              
## [334] "grey73"               "grey74"               "grey75"              
## [337] "grey76"               "grey77"               "grey78"              
## [340] "grey79"               "grey80"               "grey81"              
## [343] "grey82"               "grey83"               "grey84"              
## [346] "grey85"               "grey86"               "grey87"              
## [349] "grey88"               "grey89"               "grey90"              
## [352] "grey91"               "grey92"               "grey93"              
## [355] "grey94"               "grey95"               "grey96"              
## [358] "grey97"               "grey98"               "grey99"              
## [361] "grey100"              "honeydew"             "honeydew1"           
## [364] "honeydew2"            "honeydew3"            "honeydew4"           
## [367] "hotpink"              "hotpink1"             "hotpink2"            
## [370] "hotpink3"             "hotpink4"             "indianred"           
## [373] "indianred1"           "indianred2"           "indianred3"          
## [376] "indianred4"           "ivory"                "ivory1"              
## [379] "ivory2"               "ivory3"               "ivory4"              
## [382] "khaki"                "khaki1"               "khaki2"              
## [385] "khaki3"               "khaki4"               "lavender"            
## [388] "lavenderblush"        "lavenderblush1"       "lavenderblush2"      
## [391] "lavenderblush3"       "lavenderblush4"       "lawngreen"           
## [394] "lemonchiffon"         "lemonchiffon1"        "lemonchiffon2"       
## [397] "lemonchiffon3"        "lemonchiffon4"        "lightblue"           
## [400] "lightblue1"           "lightblue2"           "lightblue3"          
## [403] "lightblue4"           "lightcoral"           "lightcyan"           
## [406] "lightcyan1"           "lightcyan2"           "lightcyan3"          
## [409] "lightcyan4"           "lightgoldenrod"       "lightgoldenrod1"     
## [412] "lightgoldenrod2"      "lightgoldenrod3"      "lightgoldenrod4"     
## [415] "lightgoldenrodyellow" "lightgray"            "lightgreen"          
## [418] "lightgrey"            "lightpink"            "lightpink1"          
## [421] "lightpink2"           "lightpink3"           "lightpink4"          
## [424] "lightsalmon"          "lightsalmon1"         "lightsalmon2"        
## [427] "lightsalmon3"         "lightsalmon4"         "lightseagreen"       
## [430] "lightskyblue"         "lightskyblue1"        "lightskyblue2"       
## [433] "lightskyblue3"        "lightskyblue4"        "lightslateblue"      
## [436] "lightslategray"       "lightslategrey"       "lightsteelblue"      
## [439] "lightsteelblue1"      "lightsteelblue2"      "lightsteelblue3"     
## [442] "lightsteelblue4"      "lightyellow"          "lightyellow1"        
## [445] "lightyellow2"         "lightyellow3"         "lightyellow4"        
## [448] "limegreen"            "linen"                "magenta"             
## [451] "magenta1"             "magenta2"             "magenta3"            
## [454] "magenta4"             "maroon"               "maroon1"             
## [457] "maroon2"              "maroon3"              "maroon4"             
## [460] "mediumaquamarine"     "mediumblue"           "mediumorchid"        
## [463] "mediumorchid1"        "mediumorchid2"        "mediumorchid3"       
## [466] "mediumorchid4"        "mediumpurple"         "mediumpurple1"       
## [469] "mediumpurple2"        "mediumpurple3"        "mediumpurple4"       
## [472] "mediumseagreen"       "mediumslateblue"      "mediumspringgreen"   
## [475] "mediumturquoise"      "mediumvioletred"      "midnightblue"        
## [478] "mintcream"            "mistyrose"            "mistyrose1"          
## [481] "mistyrose2"           "mistyrose3"           "mistyrose4"          
## [484] "moccasin"             "navajowhite"          "navajowhite1"        
## [487] "navajowhite2"         "navajowhite3"         "navajowhite4"        
## [490] "navy"                 "navyblue"             "oldlace"             
## [493] "olivedrab"            "olivedrab1"           "olivedrab2"          
## [496] "olivedrab3"           "olivedrab4"           "orange"              
## [499] "orange1"              "orange2"              "orange3"             
## [502] "orange4"              "orangered"            "orangered1"          
## [505] "orangered2"           "orangered3"           "orangered4"          
## [508] "orchid"               "orchid1"              "orchid2"             
## [511] "orchid3"              "orchid4"              "palegoldenrod"       
## [514] "palegreen"            "palegreen1"           "palegreen2"          
## [517] "palegreen3"           "palegreen4"           "paleturquoise"       
## [520] "paleturquoise1"       "paleturquoise2"       "paleturquoise3"      
## [523] "paleturquoise4"       "palevioletred"        "palevioletred1"      
## [526] "palevioletred2"       "palevioletred3"       "palevioletred4"      
## [529] "papayawhip"           "peachpuff"            "peachpuff1"          
## [532] "peachpuff2"           "peachpuff3"           "peachpuff4"          
## [535] "peru"                 "pink"                 "pink1"               
## [538] "pink2"                "pink3"                "pink4"               
## [541] "plum"                 "plum1"                "plum2"               
## [544] "plum3"                "plum4"                "powderblue"          
## [547] "purple"               "purple1"              "purple2"             
## [550] "purple3"              "purple4"              "red"                 
## [553] "red1"                 "red2"                 "red3"                
## [556] "red4"                 "rosybrown"            "rosybrown1"          
## [559] "rosybrown2"           "rosybrown3"           "rosybrown4"          
## [562] "royalblue"            "royalblue1"           "royalblue2"          
## [565] "royalblue3"           "royalblue4"           "saddlebrown"         
## [568] "salmon"               "salmon1"              "salmon2"             
## [571] "salmon3"              "salmon4"              "sandybrown"          
## [574] "seagreen"             "seagreen1"            "seagreen2"           
## [577] "seagreen3"            "seagreen4"            "seashell"            
## [580] "seashell1"            "seashell2"            "seashell3"           
## [583] "seashell4"            "sienna"               "sienna1"             
## [586] "sienna2"              "sienna3"              "sienna4"             
## [589] "skyblue"              "skyblue1"             "skyblue2"            
## [592] "skyblue3"             "skyblue4"             "slateblue"           
## [595] "slateblue1"           "slateblue2"           "slateblue3"          
## [598] "slateblue4"           "slategray"            "slategray1"          
## [601] "slategray2"           "slategray3"           "slategray4"          
## [604] "slategrey"            "snow"                 "snow1"               
## [607] "snow2"                "snow3"                "snow4"               
## [610] "springgreen"          "springgreen1"         "springgreen2"        
## [613] "springgreen3"         "springgreen4"         "steelblue"           
## [616] "steelblue1"           "steelblue2"           "steelblue3"          
## [619] "steelblue4"           "tan"                  "tan1"                
## [622] "tan2"                 "tan3"                 "tan4"                
## [625] "thistle"              "thistle1"             "thistle2"            
## [628] "thistle3"             "thistle4"             "tomato"              
## [631] "tomato1"              "tomato2"              "tomato3"             
## [634] "tomato4"              "turquoise"            "turquoise1"          
## [637] "turquoise2"           "turquoise3"           "turquoise4"          
## [640] "violet"               "violetred"            "violetred1"          
## [643] "violetred2"           "violetred3"           "violetred4"          
## [646] "wheat"                "wheat1"               "wheat2"              
## [649] "wheat3"               "wheat4"               "whitesmoke"          
## [652] "yellow"               "yellow1"              "yellow2"             
## [655] "yellow3"              "yellow4"              "yellowgreen"
# Point type (see pch.png and execute):
plot(1:25,pch=1:25)
# Depending on the shape, col will affect the line or the background:
plot(1:25,pch=1:25,col="red")
# Some of the shapes may be filled with different colors using bg.
plot(1:25,pch=1:25,col="red",bg="blue")
# In addition, you can use any character as pch:
plot(1:25,pch=c(letters[1:18],"@","*","#","$","%","&","~"),col="red",bg="blue")

# Going back to the bumpus
layout(matrix(1:6,ncol=3,byrow=T))

plot(bumpus$HL~bumpus$TL)

plot(bumpus$HL~bumpus$TL, cex=1.25, col="red", pch=23)

# Point background colour
plot(bumpus$HL~bumpus$TL, cex=1.25, col="red", pch=23, bg="black")

# Plotting by group
plot(bumpus$HL~bumpus$TL, cex=1.25, col="red", pch=23, bg=bumpus$sex)
plot(bumpus$HL~bumpus$TL, cex=1.25, col="black", pch=23, 
     bg=ifelse(bumpus$sex=="f", "red", "blue"))

# Line thickness
plot(bumpus$HL~bumpus$TL, cex=1.25, col="black", pch=23, 
     bg=ifelse(bumpus$sex=="f", "red", "blue"), lwd=2)

# AXES STYLE ####
# Axes titles
layout(matrix(1:4, nrow=2, byrow=T))
plot(bumpus$HL~bumpus$TL, cex=1.25, col="black", pch=23, 
     bg=ifelse(bumpus$sex=="f", "red", "blue"), lwd=2,
     xlab="Total lenght", ylab="Head length")

# Axes label font size
plot(bumpus$HL~bumpus$TL, cex=1.25, col="black", pch=23, 
     bg=ifelse(bumpus$sex=="f", "red", "blue"), lwd=2,
     xlab="Total lenght", ylab="Head length",
     cex.lab=1.5)

# Axes font types
# For labels
plot(bumpus$HL~bumpus$TL, cex=1.25, col="black", pch=23, 
     bg=ifelse(bumpus$sex=="f", "red", "blue"), lwd=2,
     xlab="Total lenght", ylab="Head length",
     cex.lab=1.25, font.lab=2)

# For axis values
plot(bumpus$HL~bumpus$TL, cex=1.25, col="black", pch=23, 
     bg=ifelse(bumpus$sex=="f", "red", "blue"), lwd=2,
     xlab="Total lenght", ylab="Head length",
     cex.lab=1.25, font.lab=2, cex.axis=0.8, font.axis=4)

# Suppressing the axes
plot(bumpus$HL~bumpus$TL, cex=1.25, col="black", pch=23, 
     bg=ifelse(bumpus$sex=="f", "red", "blue"), lwd=2,
     xlab="Total lenght", ylab="Head length",
     cex.lab=1.25, font.lab=2, xaxt="n")

# Custom axis plotting
plot(bumpus$HL~bumpus$TL, cex=1.25, col="black", pch=23, 
     bg=ifelse(bumpus$sex=="f", "red", "blue"), lwd=2,
     xlab="Total lenght", ylab="Head length",
     cex.lab=1.25, font.lab=2, xaxt="n")
# There is no x-axis at this point. Let's create it:
axis(1, at=c(155, 160, 165), labels=c("small", "medium", "large"),
     font.axis=2, cex.lab=1.5, font.lab=2)

# EXTENT, BOX, AND BACKGROUND ####
plot(bumpus$HL~bumpus$TL, cex=1.25, col="black", pch=23, 
     bg=ifelse(bumpus$sex=="f", "red", "blue"), lwd=2,
     xlab="Total lenght", ylab="Head length",
     cex.lab=1.25, font.lab=2, cex.axis=0.8,
     xlim=c(145, 170), ylim=c(15, 25))

plot(bumpus$HL~bumpus$TL, cex=1.25, col="black", pch=23, 
     bg=ifelse(bumpus$sex=="f", "red", "blue"), lwd=2,
     xlab="Total lenght", ylab="Head length",
     cex.lab=1.25, font.lab=2, bty="l")

plot(bumpus$HL~bumpus$TL, cex=1.25, col="black", pch=23, 
     bg=ifelse(bumpus$sex=="f", "red", "blue"), lwd=2,
     xlab="Total lenght", ylab="Head length",
     cex.lab=1.25, font.lab=2)

plot(bumpus$HL~bumpus$TL, cex=1.25, col="black", pch=23, 
     bg=ifelse(bumpus$sex=="f", "red", "blue"), lwd=2,
     xlab="Total lenght", ylab="Head length",
     cex.lab=1.25, font.lab=2, bty="7")

     plot(bumpus$HL~bumpus$TL, cex=1.25, col="black", pch=23, 
     bg=ifelse(bumpus$sex=="f", "red", "blue"), lwd=2,
     xlab="Total lenght", ylab="Head length",
     cex.lab=1.25, font.lab=2, bty="u")

     plot(bumpus$HL~bumpus$TL, cex=1.25, col="black", pch=23, 
     bg=ifelse(bumpus$sex=="f", "red", "blue"), lwd=2,
     xlab="Total lenght", ylab="Head length",
     cex.lab=1.25, font.lab=2, bty="n")

# USING par()
layout(matrix(1:2, nrow=1, byrow=T))

par(bg="yellow")
plot(bumpus$HL~bumpus$TL, cex=1.25, col="black", pch=23, 
     bg=ifelse(bumpus$sex=="f", "red", "blue"), lwd=2,
     xlab="Total lenght", ylab="Head length",
     cex.lab=1.25, font.lab=2, bty="n")

par(family="Times")
plot(bumpus$HL~bumpus$TL, cex=1.25, col="black", pch=23, 
     bg=ifelse(bumpus$sex=="f", "red", "blue"), lwd=2,
     xlab="Total lenght", ylab="Head length",
     cex.lab=1.25, font.lab=2, bty="n")

layout(matrix(1:2, nrow=1, byrow=T))
# Setting both, family and bg:
par(family="Times", bg="white")
plot(bumpus$HL~bumpus$TL, cex=1.25, col="black", pch=23, 
     bg=ifelse(bumpus$sex=="f", "red", "blue"), lwd=2,
     xlab="Total lenght", ylab="Head length",
     cex.lab=1.25, font.lab=2, bty="n")

#Setting the margins
par(mar=c(0,0,0,0)) 
plot(bumpus$HL~bumpus$TL, cex=1.25, col="black", pch=23, 
     bg=ifelse(bumpus$sex=="f", "red", "blue"), lwd=2,
     xlab="Total lenght", ylab="Head length",
     cex.lab=1.25, font.lab=2, bty="n")

# Plot margins
layout(matrix(1:4, nrow=2, byrow=T))
par(family="Times", bg="white", mar=c(5, 5, 0, 0))
plot(bumpus$HL~bumpus$TL, cex=1.25, col="black", pch=23, 
     bg=ifelse(bumpus$sex=="f", "red", "blue"), lwd=2,
     xlab="Total lenght", ylab="Head length",
     cex.lab=1.25, font.lab=2, bty="n")

# Axis line and label spacing
par(family="Times", bg="white", mar=c(5, 5, 0, 0), mgp=c(2, 0.5, 0))
plot(bumpus$HL~bumpus$TL, cex=1.25, col="black", pch=23, 
     bg=ifelse(bumpus$sex=="f", "red", "blue"), lwd=2,
     xlab="Total lenght", ylab="Head length",
     cex.lab=1.25, font.lab=2, bty="n")

par(family="Times", bg="white", mar=c(5, 5, 0, 0), mgp=c(2, 0.5, 0.2))
plot(bumpus$HL~bumpus$TL, cex=1.25, col="black", pch=23, 
     bg=ifelse(bumpus$sex=="f", "red", "blue"), lwd=2,
     xlab="Total lenght", ylab="Head length",
     cex.lab=1.25, font.lab=2, bty="n")

par(family="Times", bg="white", mar=c(5, 5, 0, 0), mgp=c(2, 0.5, 0.5))
plot(bumpus$HL~bumpus$TL, cex=1.25, col="black", pch=23, 
     bg=ifelse(bumpus$sex=="f", "red", "blue"), lwd=2,
     xlab="Total lenght", ylab="Head length",
     cex.lab=1.25, font.lab=2, bty="]")

# Plot size
layout(1)
par(family="Times", bg="white", mar=c(5, 5, 0, 0), mgp=c(2, 0.5, 0.2),
    pin=c(1.5, 1.5))
plot(bumpus$HL~bumpus$TL, cex=1.25, col="black", pch=23, 
     bg=ifelse(bumpus$sex=="f", "red", "blue"), lwd=2,
     xlab="Total lenght", ylab="Head length",
     cex.lab=1.25, font.lab=2, bty="n")